﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _2_8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string input = textBox1.Text;
            // 第一步：判断输入是否为1个字符
            if (input.Length != 1)
            {
                MessageBox.Show("只能输入1个字符！");
                textBox1.Text = "";
                textBox1.Focus();
                return;
            }

            char c = input[0];
            int baseNum = 0; // 基准ASCII码（数字1=49，大写A=65，小写a=97）
                             // 第二步：判断字符类型，确定基准ASCII码
            if (Char.IsNumber(c))
            {
                baseNum = 49; // 数字'1'的ASCII码
                              // 额外判断是否为1-9（排除0）
                if (c < '1' || c > '9')
                {
                    MessageBox.Show("数字只能是1-9！");
                    textBox1.Text = "";
                    textBox1.Focus();
                    return;
                }
            }
            else if (Char.IsUpper(c))
            {
                baseNum = 65; // 大写'A'的ASCII码
            }
            else if (Char.IsLower(c))
            {
                baseNum = 97; // 小写'a'的ASCII码
            }
            else
            {
                MessageBox.Show("您输入的字符不合法，只能是大小写字母或数字1-9！");
                textBox1.Text = "";
                textBox1.Focus();
                return;
            }

            // 第三步：计算循环次数（行数=输入字符-基准ASCII码+1，如输入'3'则3行）
            int loopCount = c - baseNum + 1;
            label3.Text = ""; // 清空之前的结果

            // 第四步：双重循环绘制三角形（外层控制行，内层控制空格和字符）
            for (int i = 0; i < loopCount; i++)
            {
                // 内层1：打印空格（每行空格数=总行数-当前行-1，实现右对齐）
                for (int j = 0; j < loopCount - i - 1; j++)
                {
                    label3.Text += " ";
                }
                // 内层2：打印字符（每行字符数=2*当前行+1，如第0行1个，第1行3个）
                char currentChar = (char)(baseNum + i); // 当前行的字符（如第0行是基准字符）
                for (int k = 0; k < 2 * i + 1; k++)
                {
                    label3.Text += currentChar;
                }
                // 换行（\r\n用于Windows换行）
                label3.Text += "\r\n";
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            label3.Text = "输出结果";
        }
    }
}
